Async Functions এবং Promises হল JavaScript এর দুটি শক্তিশালী কৌশল যা অ্যাসিঙ্ক্রোনাস প্রোগ্রামিংকে আরও সহজ এবং পড়তে সুবিধাজনক করে তোলে। এগুলি অ্যাসিঙ্ক্রোনাস কোড ব্যবস্থাপনার জন্য ব্যবহৃত হয়, বিশেষ করে যখন আপনি API কল বা ডেটাবেস রিকোয়েস্ট ইত্যাদি করতে চান যা সময় নিতে পারে।
1. Promises
Promise হল একটি JavaScript অবজেক্ট যা ভবিষ্যতে একটি মূল্য (value) প্রদান করবে। এই মূল্যটি সফলভাবে (resolved) প্রাপ্ত হতে পারে অথবা ব্যর্থ (rejected) হতে পারে। Promise অ্যাসিঙ্ক্রোনাস অপারেশনগুলির ফলাফলকে ট্র্যাক করতে সাহায্য করে এবং then, catch, এবং finally মেথডের মাধ্যমে প্রতিক্রিয়া (response) গুলি হ্যান্ডেল করতে দেয়।
Promise এর মূল ধারণা:
- Pending: Promise এখনও সম্পন্ন হয়নি।
- Resolved (Fulfilled): Promise সফলভাবে পূর্ণ হয়েছে এবং তার একটি ফলাফল (value) রয়েছে।
- Rejected: Promise সম্পন্ন হয়নি এবং ত্রুটি (error) ঘটেছে।
Promise এর ব্যবহার উদাহরণ:
// Promise তৈরি করা
const fetchData = new Promise((resolve, reject) => {
const success = true;
if (success) {
resolve('Data fetched successfully');
} else {
reject('Failed to fetch data');
}
});
// Promise ব্যবহার করা
fetchData
.then((result) => {
console.log(result); // 'Data fetched successfully'
})
.catch((error) => {
console.error(error); // 'Failed to fetch data'
});2. Async Functions
Async Functions হল JavaScript এর একটি ফিচার যা Promise ব্যবহারকে আরও সহজ করে তোলে। async কীওয়ার্ড দিয়ে ফাংশনকে async ঘোষণা করা হয়, আর await কীওয়ার্ড দিয়ে আপনি একটি Promise-এর ফলাফল (resolve) পর্যন্ত অপেক্ষা করতে পারেন।
async: ফাংশনকে অ্যাসিঙ্ক্রোনাস ঘোষণা করে, এবং এটি একটি Promise রিটার্ন করে।await:asyncফাংশনের ভিতরে ব্যবহৃত হয় এবং Promise resolve না হওয়া পর্যন্ত এক্সিকিউশন থামিয়ে রাখে।
Async Functions এবং Await এর ব্যবহার উদাহরণ:
// Async Function তৈরি করা
const fetchData = async () => {
const promise = new Promise((resolve, reject) => {
const success = true;
if (success) {
resolve('Data fetched successfully');
} else {
reject('Failed to fetch data');
}
});
// Await ব্যবহার করা
const result = await promise; // Promise রেজলভ না হওয়া পর্যন্ত অপেক্ষা করবে
console.log(result); // 'Data fetched successfully'
};
fetchData().catch((error) => {
console.error(error); // 'Failed to fetch data'
});Async/Await এবং Promises এর মধ্যে পার্থক্য
- Promises: Promises একটি ঐতিহ্যগত পদ্ধতি যা অ্যাসিঙ্ক্রোনাস কার্যকলাপের জন্য ব্যবহৃত হয়। এটি
then()এবংcatch()মেথডের মাধ্যমে কাজ করে। - Async/Await: Async/Await, Promise এর উপর ভিত্তি করে তৈরি হলেও, এটি আরও পড়তে সহজ এবং সিঙ্ক্রোনাস কোডের মতো দেখতে হয়।
asyncফাংশন এবংawaitকীওয়ার্ড দিয়ে কোডের ভেতরে অ্যাসিঙ্ক্রোনাস অপারেশনগুলোকে আরও সহজে লিখা যায়।
3. Async Functions এবং Promises সহ API কলের উদাহরণ
API কলের জন্য Async/Await বা Promises ব্যবহার করা একটি সাধারণ প্র্যাকটিস। নিচে একটি উদাহরণ দেওয়া হলো যেখানে fetch API ব্যবহার করে ডেটা ফেচ করা হচ্ছে।
Async/Await এবং Fetch API উদাহরণ:
// Async function দিয়ে API কল
const fetchUserData = async () => {
try {
const response = await fetch('https://jsonplaceholder.typicode.com/users');
const data = await response.json();
console.log(data);
} catch (error) {
console.error('Error fetching data:', error);
}
};
fetchUserData();Promises দিয়ে API কল:
// Promise দিয়ে API কল
const fetchUserData = () => {
fetch('https://jsonplaceholder.typicode.com/users')
.then((response) => response.json())
.then((data) => console.log(data))
.catch((error) => console.error('Error fetching data:', error));
};
fetchUserData();4. Promise.all() এবং Promise.race()
- Promise.all(): এটি একাধিক Promise একসাথে নিয়ে কাজ করে। যখন সব Promise রেজলভ হবে, তখন একটি অ্যারে হিসেবে তাদের ফলাফল ফিরিয়ে দেওয়া হবে।
- Promise.race(): এটি একাধিক Promise নিয়ে কাজ করে এবং প্রথম Promise যা রেজলভ বা রিজেক্ট হবে, সেই Promise এর ফলাফল ফিরে দেয়।
Promise.all() উদাহরণ:
const promise1 = new Promise((resolve) => setTimeout(resolve, 1000, 'One'));
const promise2 = new Promise((resolve) => setTimeout(resolve, 2000, 'Two'));
Promise.all([promise1, promise2])
.then((results) => {
console.log(results); // ['One', 'Two']
})
.catch((error) => {
console.error(error);
});Promise.race() উদাহরণ:
const promise1 = new Promise((resolve) => setTimeout(resolve, 1000, 'One'));
const promise2 = new Promise((resolve) => setTimeout(resolve, 2000, 'Two'));
Promise.race([promise1, promise2])
.then((result) => {
console.log(result); // 'One' (because it resolves first)
})
.catch((error) => {
console.error(error);
});সারাংশ
- Promises অ্যাসিঙ্ক্রোনাস কার্যকলাপ পরিচালনা করার জন্য ব্যবহৃত হয় এবং এটি ফলাফল বা ত্রুটির জন্য অপেক্ষা করে।
- Async/Await হল Promises এর একটি সহজ এবং পড়তে সুবিধাজনক পদ্ধতি, যা অ্যাসিঙ্ক্রোনাস কোডকে সিঙ্ক্রোনাস কোডের মতো দেখায়।
- Promise.all() এবং Promise.race() একাধিক Promise একসাথে পরিচালনা করতে সাহায্য করে।
Async Functions এবং Promises JavaScript অ্যাসিঙ্ক্রোনাস প্রোগ্রামিং সহজ এবং কার্যকরী করে তোলে।
Read more